package cn.edu.hitsz.compiler.parser.table.symbol;

import cn.edu.hitsz.compiler.lexer.Token;
import cn.edu.hitsz.compiler.parser.table.NonTerminal;

/**
 * 进行IRGenerator分析使用的数据结构
 */
public class ValSymbol extends Symbol{

    /**
     * 表示该元素的值，主要用于立即数
     */
    int val;
    /**
     * 表示该元素的类别——常数/变量（不同变量使用不同标识符）
     */
    String type = "";

    public ValSymbol(Token token) {
        super(token);
        if(token.getKindId().equals("IntConst")){
            type = "IntConst";
            val = Integer.parseInt(token.getText());
        }else {
            type = token.getText();
            val = Integer.MIN_VALUE;
        }
    }

    public  ValSymbol(NonTerminal nonTerminal){
        super(nonTerminal);
    }

    public String getType(){return  this.type;}
    public void setType(String type){this.type = type;}
    public int getVal(){return this.val;}
    public void setVal(int val){this.val = val;}
}
